package biblioteca.entidades;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;

@Entity
@NamedQueries({
	@NamedQuery(name="findByMatricula", query="select u from Usuario u where u.matricula = :matricula")
})
public class Usuario implements Serializable {
	private static final long serialVersionUID = 1L;
	private int id;
	private String matricula;
	private String nome;
	private String cpf;
	private String email;
	private String telefone;
	private List<Emprestimo> emprestimos = new ArrayList<Emprestimo>();
	
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getMatricula() {
		return matricula;
	}
	public void setMatricula(String matricula) {
		this.matricula = matricula;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getCpf() {
		return cpf;
	}
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getTelefone() {
		return telefone;
	}
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}
	
	@OneToMany(mappedBy="usuario", cascade=CascadeType.PERSIST, fetch=FetchType.EAGER)
	public List<Emprestimo> getEmprestimos() {
		return emprestimos;
	}
	
	public void setEmprestimos(List<Emprestimo> emprestimos) {
		this.emprestimos = emprestimos;		
	}
	
	public String toString() {
		return getMatricula() + " - " + getNome();
	}
}
